
#define MAXQ 20
#define TAM 128

using namespace std;


int socket_creacion()
{

	return (socket(AF_INET,SOCK_STREAM,0));

}


void socket_conectar_servidorST(int socket_fd)
{
        int error;


         char ip_servidor[16];
         char puerto[10];
         int cont=0;
         char linea[16];

         ifstream f_cliente("../config/cliente.ini");
         while(!f_cliente.eof())
         {
              cont++;
              f_cliente.getline(linea,sizeof(linea),'\n');
              if(cont == 1)
                strcpy(ip_servidor,linea);
              if(cont == 2)
              {
                strcpy(puerto,linea);
                break;
              }
         }
        
         f_cliente.close();

        struct sockaddr_in listen_address;


        listen_address.sin_family = AF_INET; // Llenamos la estructura
        listen_address.sin_port = htons(atoi(puerto)); // con la info del
        listen_address.sin_addr.s_addr = inet_addr(ip_servidor); // servidor.
        error = connect(socket_fd, (struct sockaddr *)&listen_address, sizeof(struct sockaddr)); // Conectamos el socket

        if(error == -1)
        {
             cout<<"Error connect"<<endl;
             exit(1);
        }
}




// el cliente crea el socket de comunicacion esperando que el servidor de torneo le envie los datos datos para dibujar
int crear_socket_SP()
{

        int listen_socket_SP;

        unsigned short int listen_port = 0;
        unsigned long int listen_ip_address = 0;
        struct sockaddr_in listen_address, con_address;
        socklen_t con_addr_len;


       // obtengo el puerto de cliente.ini
         char puerto[5];
         int cont=0;
         char linea[16];

         ifstream f_cliente("../config/cliente.ini");
         while(!f_cliente.eof())
         {
              cont++;
              f_cliente.getline(linea,sizeof(linea));
              if(cont == 3){
                strcpy(puerto,linea);
                break;
              }
         }

         f_cliente.close();



        //Creamos el Socket de Escucha
        listen_socket_SP = socket(AF_INET, SOCK_STREAM, 0);

        //Asigno direccion y configuracion.puerto_escucha
        bzero(&listen_address, sizeof(listen_address));
        listen_address.sin_family = AF_INET;
        listen_port = htons(atoi(puerto));
        listen_address.sin_port = listen_port;
        listen_address.sin_addr.s_addr = htonl(INADDR_ANY);
       

        if((bind(listen_socket_SP,(struct sockaddr*)&(listen_address), sizeof(struct sockaddr)))<0){
                fprintf(stderr , "Error al asignar la Direccion IP.\n");
                exit(0);
        }

        //Comenzamos a escuchar conexiones
        if( (listen(listen_socket_SP,MAXQ)) < 0 ){
                fprintf(stderr , "Error al escuchar conexiones.\n");
                exit(0);
        }

        return listen_socket_SP;

}


